1
정밀도 관리 및 오버플로 방지
AI018Lesson 3
00:00

NumPy에서는 정밀도 관리 메모리 효율성과 수치적 정확성 사이의 균형을 위해 비트 깊이를 의도적으로 선택하는 것입니다. 일반적인 파이썬 정수와 달리, 정밀도가 무제한인 반면에, NumPy는 고정 크기의 C 타입(예:) int32_t, uint64_t)를 사용합니다.

1. 타입 계층 구조

NumPy의 dtype은 메모리 사용량을 정의합니다. 비록 np.int_() 은 플랫폼에 따라 달라지는 크기를 제공하지만, 신뢰할 수 있는 시스템은 고정 크기 별칭 (표: 페이지 34)을 활용하여 하드웨어 간 일관성을 보장합니다.

  • 정수:int8_t, int16_t, int32_t, int64_t.
  • 부호 없는:uint8_t 부터 uint64_t.
  • 포인터:intptr_t, uintptr_t.

2. 진단 도구

산술 연산을 수행하기 전에 np.iinfo() 그리고 np.finfo() 경계를 확인하세요. 예를 들어, 1 + np.finfo(np.longdouble).eps 는 덧셈이 더 이상 값을 변경하지 않는 임계값인 기계 에프스론을 식별합니다.

정수 오버플로우롤오버 논리최대값 + 1 — 최소값부동소수점포화 논리최대값 초과 — 무한대

3. 오버플로의 메커니즘

NumPy는 오버플로우 발생 시 오류를 발생시키지 않습니다. 즉, 조용히 실패합니다. 예를 들어, np.power(100, 8, dtype=np.int32) 는 자르기 결과를 낳지만, float64inf로 전환됩니다. 연산 전에 카테고리를 검증하려면 np.issubdtype(d, np.floating) 사용하세요.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>